package com.cmc.cloud.cmclink.doc.convert;

import com.cmc.cloud.cmclink.doc.api.document.rep.BlnoCargoRespDto;
import com.cmc.cloud.cmclink.doc.api.document.req.si.BlnoCargoUpdateReqDto;
import com.cmc.cloud.cmclink.doc.entity.BlnoCargoDO;
import com.cmc.cloud.cmclink.doc.mq.SiEdiReqVO;
import com.cmc.cloud.cmclink.doc.vo.blnocargovo.BlnoCargoCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.blnocargovo.BlnoCargoRespVO;
import com.cmc.cloud.cmclink.doc.vo.blnocargovo.BlnoCargoUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 提单货物信息 Convert
 *
 * @author 集运管理员
 */
@Mapper
public interface BlnoCargoConvert {

    BlnoCargoConvert INSTANCE = Mappers.getMapper(BlnoCargoConvert.class);

    /**
     * 属性转换
     *
     * @param bean
     * @return
     */
    BlnoCargoDO convert(BlnoCargoCreateReqVO bean);

    /**
     * 属性转换
     *
     * @param bean
     * @return
     */
    BlnoCargoDO convert(BlnoCargoUpdateReqVO bean);

    /**
     * 属性转换
     *
     * @param bean
     * @return
     */
    BlnoCargoRespVO convert(BlnoCargoDO bean);

    /**
     * 属性转换
     *
     * @param list
     * @return
     */
    List<BlnoCargoRespVO> convertList(List<BlnoCargoDO> list);

    /**
     * 属性转换
     *
     * @param blnoCargoUpdateReqDtoList
     * @return
     */
    List<BlnoCargoUpdateReqVO> convertBlnoCargoUpdateReqVO(List<BlnoCargoUpdateReqDto> blnoCargoUpdateReqDtoList);

    /**
     * 属性转换
     *
     * @param cargoList cargoList
     * @return List<BlnoCargoUpdateReqVO>
     */
    List<BlnoCargoUpdateReqVO> ediConvertBlnoCargoUpdateReqVO(List<SiEdiReqVO.Cargo> cargoList);

    /**
     * 属性转换
     *
     * @param blnoCargoUpdateReqVOList
     * @return
     */
    List<BlnoCargoUpdateReqDto> convertBlnoCargoUpdateReqDto(List<BlnoCargoUpdateReqVO> blnoCargoUpdateReqVOList);

    /**
     * 属性转换
     *
     * @param blnoCargoDoList
     * @return
     */
    List<BlnoCargoRespDto> convertBlnoCargoRespDto(List<BlnoCargoDO> blnoCargoDoList);

}
